/**********************************************************************************
*
* 获取，保存，设置，更新被管主机名和IP地址模块
* 主机名和IP保存在一个结构体数组里，将对应关系保存在一个uint8类型的位图里，
* 最多可以同时监控256台主机。
* #被管主机连接到server端时，server端更新位图，并将新的位图向所有被管主机发送一份。
* 将监控的主机的主机名和IP地址写在Server端的hostname.conf配置文件中，Server端运行
* 时先读取该配置文件，以维护主机表。
*
*********************************************************************************/

#ifndef WY_HOSTMAP_H
#define WY_HOSTMAP_H

#define HOST_MAX_LEN	32			//主机名的最大长度，当这个宏更新的时候，../collector/collector.h里的HOST_MAX_LEN宏也要更新。
#define IP_ADDR_LEN	16			//主机IP地址的长度
#define HOST_TABLE_NUM	256			//主机表数组的长度，最多可以同时监控256台主机，可以改小，但不可以改大，如果要改大，就要将主机位图改成更大的类型。

#define CONF_PATH		"../../../conf/"
#define CONF_HOSTMAP_FILE	"hostmap.conf"
#define REMARK_STR		'#'

struct host_info {				//主机信息结构体，保存主机名和IP地址。
	char hostname[HOST_MAX_LEN];
	char ipaddr[IP_ADDR_LEN];
};

struct host_table {				//主机表结构体
	char enable;				//主机表是否可用
	struct host_info info;	//主机信息
};

//static char host_map_all;					//被管主机位图，最多可以同时监控256台主机。
static int host_num_all;					//记录被管主机表有多少台主机。
static struct host_table host_table_all[HOST_TABLE_NUM];	//被管主机表数组。

/*初始化被管主机表模块*/
int init_hostmap(void);
/*读取主机表配置文件*/
int read_host_conf(void);
/*获取主机信息*/
int get_hostinfo(const int host_map, struct host_info *infop);
/*保存，更新主机信息*/
int save_hostinfo(const struct host_info *infop);
/*获取IP地址为ipaddr的主机的host_map*/
int get_hostmap(char *ipaddr);
/*获取被管主机位图表*/
//char get_host_map_all(void);

#endif
